package be.novelfaces.component.properties;

import org.richfaces.cdk.annotations.Attribute;
import org.richfaces.cdk.annotations.Description;

public interface GlobalProperties {

	@Attribute(description = @Description(value = "Specifies a keyboard shortcut to access an element", //
	displayName = "accesskey"))
	String getAccesskey();

	@Attribute(description = @Description(value = "Space-separated list of CSS style class(es) to be applied when this element is rendered. " //
			+ "This value must be passed through as the \"class\" attribute on generated markup.", //
	displayName = "styleClass"))
	String getStyleClass();

	@Attribute(description = @Description(value = "Specifies if the user is allowed to edit the content or not. " //
			+ "<p>Possible values are:</p>" //
			+ "<ul>" //
			+ "<li>true - Specifies that the content of the element should be editable</li>" //
			+ "<li>false - Specifies that the content of the element should not be editable</li>" //
			+ "<li>inherit - Specifies that the content of the element should be editable if the parent element is</li>" //
			+ "</ul>", //
	displayName = "contenteditable"))
	String getContenteditable();

	@Attribute(description = @Description(value = "Specifies the context menu for an element.", //
	displayName = "contextmenu"))
	String getContextmenu();

	@Attribute(description = @Description(value = "Specifies the text direction for the content in an element." //
			+ "<p>Possible values are:</p>" //
			+ "<ul>" //
			+ "<li>ltr - Left-to-right text direction</li>" //
			+ "<li>rtl - Right-to-left text direction</li>" //
			+ "<li>auto - Let the browser figure out the text direction based on the content. This is only recommended if the text directionality is unknown</li>" //
			+ "</ul>", //
	displayName = "dir"))
	String getDir();

	@Attribute(description = @Description(value = "Specifies whether or not a user is allowed to drag an element (true, false or auto).", //
	displayName = "draggable"))
	String getDraggable();

	@Attribute(description = @Description(value = "Specifies what happens when dragged items/data is dropped in the element (copy, move, link)", //
	displayName = "dropzone"))
	String getDropzone();

	@Attribute(description = @Description(value = "Specifies that the element is not relevant. Hidden elements are not displayed. " //
			+ "A value of false causes no attribute to be rendered, while a value of true causes the " //
			+ "attribute to be rendered as hidden=\"hidden\".", //
	displayName = "hidden"))
	boolean isHidden();

	@Attribute(description = @Description(value = "The component identifier for this component. " //
			+ "This value must be unique within the closest parent component that is a naming container.", //
	displayName = "id"))
	String getId();

	@Attribute(description = @Description(value = "Specifies a language code for the content in an element", //
	displayName = "lang"))
	String getLang();

	@Attribute(description = @Description(value = "Specifies if the element must have its spelling and grammar checked (true or false).", //
	displayName = "spellcheck"))
	String getSpellcheck();

	@Attribute(description = @Description(value = "Specifies an inline style for an element.", //
	displayName = "style"))
	String getStyle();

	@Attribute(description = @Description(value = "Specifies the tab order of an element. This value must be an integer between 0 and 32767.", //
	displayName = "tabindex"))
	String getTabindex();

	@Attribute(description = @Description(value = "Specifies extra information about an element", //
	displayName = "title"))
	String getTitle();

}
